↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
T_IN(N) → U11(N, ll_in(N, Xs))
T_IN(N) → LL_IN(N, Xs)
LL_IN(s(N), .(X, Xs)) → U51(N, X, Xs, ll_in(N, Xs))
LL_IN(s(N), .(X, Xs)) → LL_IN(N, Xs)
U11(N, ll_out(N, Xs)) → U21(N, select_in(X, Xs, Xs1))
U11(N, ll_out(N, Xs)) → SELECT_IN(X, Xs, Xs1)
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → U61(X, Y, Xs, Ys, select_in(X, Xs, Ys))
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → SELECT_IN(X, Xs, Ys)
U21(N, select_out(X, Xs, Xs1)) → U31(N, ll_in(M, Xs1))
U21(N, select_out(X, Xs, Xs1)) → LL_IN(M, Xs1)
U31(N, ll_out(M, Xs1)) → U41(N, t_in(M))
U31(N, ll_out(M, Xs1)) → T_IN(M)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
T_IN(N) → U11(N, ll_in(N, Xs))
T_IN(N) → LL_IN(N, Xs)
LL_IN(s(N), .(X, Xs)) → U51(N, X, Xs, ll_in(N, Xs))
LL_IN(s(N), .(X, Xs)) → LL_IN(N, Xs)
U11(N, ll_out(N, Xs)) → U21(N, select_in(X, Xs, Xs1))
U11(N, ll_out(N, Xs)) → SELECT_IN(X, Xs, Xs1)
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → U61(X, Y, Xs, Ys, select_in(X, Xs, Ys))
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → SELECT_IN(X, Xs, Ys)
U21(N, select_out(X, Xs, Xs1)) → U31(N, ll_in(M, Xs1))
U21(N, select_out(X, Xs, Xs1)) → LL_IN(M, Xs1)
U31(N, ll_out(M, Xs1)) → U41(N, t_in(M))
U31(N, ll_out(M, Xs1)) → T_IN(M)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → SELECT_IN(X, Xs, Ys)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → SELECT_IN(X, Xs, Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
SELECT_IN(.(Xs)) → SELECT_IN(Xs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
LL_IN(s(N), .(X, Xs)) → LL_IN(N, Xs)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
LL_IN(s(N), .(X, Xs)) → LL_IN(N, Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
LL_IN → LL_IN
LL_IN → LL_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
U21(N, select_out(X, Xs, Xs1)) → U31(N, ll_in(M, Xs1))
U11(N, ll_out(N, Xs)) → U21(N, select_in(X, Xs, Xs1))
T_IN(N) → U11(N, ll_in(N, Xs))
U31(N, ll_out(M, Xs1)) → T_IN(M)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
U21(N, select_out(X, Xs, Xs1)) → U31(N, ll_in(M, Xs1))
U11(N, ll_out(N, Xs)) → U21(N, select_in(X, Xs, Xs1))
T_IN(N) → U11(N, ll_in(N, Xs))
U31(N, ll_out(M, Xs1)) → T_IN(M)
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U31(ll_out(M, Xs1)) → T_IN(M)
T_IN(N) → U11(ll_in)
U11(ll_out(N, Xs)) → U21(select_in(Xs))
U21(select_out(Xs1)) → U31(ll_in)
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(Xs)
select_in(.(Xs)) → U6(select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(select_out(Ys)) → select_out(.(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0)
U21(select_out(y0)) → U31(ll_out(0, []))
U21(select_out(y0)) → U31(U5(ll_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U31(ll_out(M, Xs1)) → T_IN(M)
U21(select_out(y0)) → U31(ll_out(0, []))
T_IN(N) → U11(ll_in)
U11(ll_out(N, Xs)) → U21(select_in(Xs))
U21(select_out(y0)) → U31(U5(ll_in))
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(Xs)
select_in(.(Xs)) → U6(select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(select_out(Ys)) → select_out(.(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0)
U11(ll_out(y0, .(x0))) → U21(U6(select_in(x0)))
U11(ll_out(y0, .(x0))) → U21(select_out(x0))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U31(ll_out(M, Xs1)) → T_IN(M)
U21(select_out(y0)) → U31(ll_out(0, []))
T_IN(N) → U11(ll_in)
U11(ll_out(y0, .(x0))) → U21(select_out(x0))
U11(ll_out(y0, .(x0))) → U21(U6(select_in(x0)))
U21(select_out(y0)) → U31(U5(ll_in))
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(Xs)
select_in(.(Xs)) → U6(select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(select_out(Ys)) → select_out(.(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0)
T_IN(y0) → U11(U5(ll_in))
T_IN(y0) → U11(ll_out(0, []))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
U31(ll_out(M, Xs1)) → T_IN(M)
U21(select_out(y0)) → U31(ll_out(0, []))
U11(ll_out(y0, .(x0))) → U21(select_out(x0))
T_IN(y0) → U11(U5(ll_in))
U11(ll_out(y0, .(x0))) → U21(U6(select_in(x0)))
T_IN(y0) → U11(ll_out(0, []))
U21(select_out(y0)) → U31(U5(ll_in))
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(Xs)
select_in(.(Xs)) → U6(select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(select_out(Ys)) → select_out(.(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
U31(ll_out(M, Xs1)) → T_IN(M)
U21(select_out(y0)) → U31(ll_out(0, []))
U11(ll_out(y0, .(x0))) → U21(select_out(x0))
T_IN(y0) → U11(U5(ll_in))
U11(ll_out(y0, .(x0))) → U21(U6(select_in(x0)))
U21(select_out(y0)) → U31(U5(ll_in))
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(Xs)
select_in(.(Xs)) → U6(select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(select_out(Ys)) → select_out(.(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0)
U31(ll_out(M, Xs1)) → T_IN(M)
U21(select_out(y0)) → U31(ll_out(0, []))
U11(ll_out(y0, .(x0))) → U21(select_out(x0))
T_IN(y0) → U11(U5(ll_in))
U11(ll_out(y0, .(x0))) → U21(U6(select_in(x0)))
U21(select_out(y0)) → U31(U5(ll_in))
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(Xs)
select_in(.(Xs)) → U6(select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(select_out(Ys)) → select_out(.(Ys))
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
T_IN(N) → U11(N, ll_in(N, Xs))
T_IN(N) → LL_IN(N, Xs)
LL_IN(s(N), .(X, Xs)) → U51(N, X, Xs, ll_in(N, Xs))
LL_IN(s(N), .(X, Xs)) → LL_IN(N, Xs)
U11(N, ll_out(N, Xs)) → U21(N, select_in(X, Xs, Xs1))
U11(N, ll_out(N, Xs)) → SELECT_IN(X, Xs, Xs1)
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → U61(X, Y, Xs, Ys, select_in(X, Xs, Ys))
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → SELECT_IN(X, Xs, Ys)
U21(N, select_out(X, Xs, Xs1)) → U31(N, ll_in(M, Xs1))
U21(N, select_out(X, Xs, Xs1)) → LL_IN(M, Xs1)
U31(N, ll_out(M, Xs1)) → U41(N, t_in(M))
U31(N, ll_out(M, Xs1)) → T_IN(M)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
T_IN(N) → U11(N, ll_in(N, Xs))
T_IN(N) → LL_IN(N, Xs)
LL_IN(s(N), .(X, Xs)) → U51(N, X, Xs, ll_in(N, Xs))
LL_IN(s(N), .(X, Xs)) → LL_IN(N, Xs)
U11(N, ll_out(N, Xs)) → U21(N, select_in(X, Xs, Xs1))
U11(N, ll_out(N, Xs)) → SELECT_IN(X, Xs, Xs1)
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → U61(X, Y, Xs, Ys, select_in(X, Xs, Ys))
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → SELECT_IN(X, Xs, Ys)
U21(N, select_out(X, Xs, Xs1)) → U31(N, ll_in(M, Xs1))
U21(N, select_out(X, Xs, Xs1)) → LL_IN(M, Xs1)
U31(N, ll_out(M, Xs1)) → U41(N, t_in(M))
U31(N, ll_out(M, Xs1)) → T_IN(M)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → SELECT_IN(X, Xs, Ys)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
SELECT_IN(X, .(Y, Xs), .(Y, Ys)) → SELECT_IN(X, Xs, Ys)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
SELECT_IN(.(Xs)) → SELECT_IN(Xs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
LL_IN(s(N), .(X, Xs)) → LL_IN(N, Xs)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
LL_IN(s(N), .(X, Xs)) → LL_IN(N, Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
LL_IN → LL_IN
LL_IN → LL_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
U21(N, select_out(X, Xs, Xs1)) → U31(N, ll_in(M, Xs1))
U11(N, ll_out(N, Xs)) → U21(N, select_in(X, Xs, Xs1))
T_IN(N) → U11(N, ll_in(N, Xs))
U31(N, ll_out(M, Xs1)) → T_IN(M)
t_in(0) → t_out(0)
t_in(N) → U1(N, ll_in(N, Xs))
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U1(N, ll_out(N, Xs)) → U2(N, select_in(X, Xs, Xs1))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
U2(N, select_out(X, Xs, Xs1)) → U3(N, ll_in(M, Xs1))
U3(N, ll_out(M, Xs1)) → U4(N, t_in(M))
U4(N, t_out(M)) → t_out(N)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
U21(N, select_out(X, Xs, Xs1)) → U31(N, ll_in(M, Xs1))
U11(N, ll_out(N, Xs)) → U21(N, select_in(X, Xs, Xs1))
T_IN(N) → U11(N, ll_in(N, Xs))
U31(N, ll_out(M, Xs1)) → T_IN(M)
ll_in(0, []) → ll_out(0, [])
ll_in(s(N), .(X, Xs)) → U5(N, X, Xs, ll_in(N, Xs))
select_in(X, .(X, Xs), Xs) → select_out(X, .(X, Xs), Xs)
select_in(X, .(Y, Xs), .(Y, Ys)) → U6(X, Y, Xs, Ys, select_in(X, Xs, Ys))
U5(N, X, Xs, ll_out(N, Xs)) → ll_out(s(N), .(X, Xs))
U6(X, Y, Xs, Ys, select_out(X, Xs, Ys)) → select_out(X, .(Y, Xs), .(Y, Ys))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
U21(N, select_out(Xs, Xs1)) → U31(N, ll_in)
U11(N, ll_out(N, Xs)) → U21(N, select_in(Xs))
U31(N, ll_out(M, Xs1)) → T_IN(M)
T_IN(N) → U11(N, ll_in)
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(.(Xs), Xs)
select_in(.(Xs)) → U6(Xs, select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(Xs, select_out(Xs, Ys)) → select_out(.(Xs), .(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0, x1)
U21(y0, select_out(y1, y2)) → U31(y0, ll_out(0, []))
U21(y0, select_out(y1, y2)) → U31(y0, U5(ll_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
U21(y0, select_out(y1, y2)) → U31(y0, ll_out(0, []))
U21(y0, select_out(y1, y2)) → U31(y0, U5(ll_in))
U11(N, ll_out(N, Xs)) → U21(N, select_in(Xs))
T_IN(N) → U11(N, ll_in)
U31(N, ll_out(M, Xs1)) → T_IN(M)
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(.(Xs), Xs)
select_in(.(Xs)) → U6(Xs, select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(Xs, select_out(Xs, Ys)) → select_out(.(Xs), .(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0, x1)
U11(y0, ll_out(y0, .(x0))) → U21(y0, U6(x0, select_in(x0)))
U11(y0, ll_out(y0, .(x0))) → U21(y0, select_out(.(x0), x0))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
U21(y0, select_out(y1, y2)) → U31(y0, ll_out(0, []))
U21(y0, select_out(y1, y2)) → U31(y0, U5(ll_in))
U11(y0, ll_out(y0, .(x0))) → U21(y0, select_out(.(x0), x0))
U11(y0, ll_out(y0, .(x0))) → U21(y0, U6(x0, select_in(x0)))
U31(N, ll_out(M, Xs1)) → T_IN(M)
T_IN(N) → U11(N, ll_in)
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(.(Xs), Xs)
select_in(.(Xs)) → U6(Xs, select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(Xs, select_out(Xs, Ys)) → select_out(.(Xs), .(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0, x1)
T_IN(y0) → U11(y0, ll_out(0, []))
T_IN(y0) → U11(y0, U5(ll_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
U21(y0, select_out(y1, y2)) → U31(y0, ll_out(0, []))
U21(y0, select_out(y1, y2)) → U31(y0, U5(ll_in))
U11(y0, ll_out(y0, .(x0))) → U21(y0, select_out(.(x0), x0))
U11(y0, ll_out(y0, .(x0))) → U21(y0, U6(x0, select_in(x0)))
T_IN(y0) → U11(y0, ll_out(0, []))
U31(N, ll_out(M, Xs1)) → T_IN(M)
T_IN(y0) → U11(y0, U5(ll_in))
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(.(Xs), Xs)
select_in(.(Xs)) → U6(Xs, select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(Xs, select_out(Xs, Ys)) → select_out(.(Xs), .(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0, x1)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
U21(y0, select_out(y1, y2)) → U31(y0, ll_out(0, []))
U21(y0, select_out(y1, y2)) → U31(y0, U5(ll_in))
U11(y0, ll_out(y0, .(x0))) → U21(y0, select_out(.(x0), x0))
U11(y0, ll_out(y0, .(x0))) → U21(y0, U6(x0, select_in(x0)))
U31(N, ll_out(M, Xs1)) → T_IN(M)
T_IN(y0) → U11(y0, U5(ll_in))
ll_in → ll_out(0, [])
ll_in → U5(ll_in)
select_in(.(Xs)) → select_out(.(Xs), Xs)
select_in(.(Xs)) → U6(Xs, select_in(Xs))
U5(ll_out(N, Xs)) → ll_out(s(N), .(Xs))
U6(Xs, select_out(Xs, Ys)) → select_out(.(Xs), .(Ys))
ll_in
select_in(x0)
U5(x0)
U6(x0, x1)